package 设计模式.a_简单工厂;

/**
 * 
 * 简单工厂模式：建立一个工厂类，对实现了同一个接口的类进行实例化
 *  把实例化的操作单独放在一个Factory类中，
 *  让Factory来决定具体子类的实例化
 *  
 *  优点：
 *      1、可以把客户类和具体子类的实现解耦，客户类不需要知道有哪些子类以及需要实例化哪个子类
 *  缺点：
 *      1、工厂类不够灵活，增加新的具体产品需要修改工厂类的判断逻辑代码，
 *      2、产品较多时，工厂方法也会变复杂
 * 
 *  简单工厂模式更适合产品种类较少且变化不大的情况
 * 
 * @author caihe
 * @date 2023/3/6 11:14
 */
public class Test {

    public static void main(String[] args) {

        Coin CopperCoin = CoinFactory.getCoin(CoinTypeEnum.COPPER);
        System.out.println(CopperCoin.getDesc());

        Coin goldCoin = CoinFactory.getCoin(CoinTypeEnum.GOLD);
        System.out.println(goldCoin.getDesc());

    }
    
}
